package com.profgj.profgj.utils;

import com.profgj.profgj.entity.*;
import com.profgj.profgj.entity.System;
import com.profgj.profgj.vo.*;
import javax.servlet.http.Part;
import java.util.Date;
import java.util.List;

/**
 * 判空工具类
 */
public class EmptyUtils {

    /**
     * 对Long类型 判断  null 或 没有值的情况下
     * @param id
     * @return
     */
    public static boolean isLongEmpty(Long id){

        // id为空返回false
        if(id == null){
            return false;
        }

        // 有值情况下返回true
        return true;
    }

    /**
     * 判断整数类型参数是否大于0
     * @param number
     * @return
     */
    public static boolean isIntegerEmpty(Integer number){

        // number为空返回false
        if(number == null){
            return false;
        }
        // number值小于等于0返回false
        if(number <= 0){
            return false;
        }
        // 有值情况下返回true
        return true;
    }

    /**
     * 判断关键字是否为空
     * @param word  关键字字符串
     * @return
     */
    public static boolean isStringEmpty(String word){

        // word为空返回false
        if(word == null){
            return false;
        }
        // 字符串是否为空
        if(word.isEmpty()){
            return false;
        }

        return true;
    }

    /**
     * 企业对象判断是否为空
     * @param enterprise    企业对象
     * @return
     */
    public static boolean isEnterpriseEmpty(Enterprise enterprise){

        if(enterprise == null){
            return false;
        }

        return true;
    }

    /**
     * 判断项目要件对象是否为空
     * @param projectBaseInfo   项目要件对象
     * @return
     */
    public static boolean isProjectBaseInfoEmpty(ProjectBaseInfo projectBaseInfo){

        if(projectBaseInfo == null){
            return false;
        }

        return true;
    }


    /**
     * 判断项目要件是否为空
     * @param projectImportantDocument  项目要件封装对象
     * @return
     */
    public static boolean isProjectImportantDocumentEmpty(ProjectImportantDocument projectImportantDocument){

        if(projectImportantDocument == null){
            return false;
        }

        return true;
    }

    /**
     * 对项目要件查询后的数据List判断为空数据
     * @param projectImportantDocumentVos   项目要件封装对象list
     * @return
     */
    public static boolean isProjectImportantDocumentListEmpty(List<ProjectImportantDocumentVo> projectImportantDocumentVos){

        // 排除空指针
        if(projectImportantDocumentVos == null){
            return false;
        }

        return true;
    }

    /**
     * 对企业查询后的数据List判断为空数据
     * @param enterpriseList
     * @return
     */
    public static boolean isEnterpriseListEmpty(List<Enterprise> enterpriseList){

        // 排除空指针
        if(enterpriseList == null){
            return false;
        }

        return true;
    }



    /**
     * 判断项目基本情况的列表是否为空
     * @param projectBaseInfos  列表
     * @return
     */
    public static boolean isProjectBaseInfoListEmpty(List<ProjectBaseInfoVo> projectBaseInfos){

        // 排除空指针
        if(projectBaseInfos == null){
            return false;
        }

        if (projectBaseInfos.size() == 0){
            return false;
        }

        return true;
    }


    /**
     * 判断数组ids是否为空
     * @param ids   id数组
     * @return
     */
    public static boolean isIdsEmpty(Long[] ids) {
        // 排除空指针
        if(ids == null){
            return false;
        }
        // 判断数组元素是否为空
        if(ids.length == 0){
            return false;
        }

        return true;
    }

    /**
     * 文件判断是否为空
     * @param files  文件数组对象
     * @return
     */
    public static boolean isNotFiles(Part[] files){

        // 判断文件是否为null
        if(files == null){
            return false;
        }
        // 判断文件名是否为空
        if(files.length == 0) {
            return false;
        }
        return true;
    }

    /**
     * 文件判断是否为空
     * @param file  文件对象
     * @return
     */
    public static boolean isNotFile(Part file){

        // 判断文件是否为null
        if(file == null){
            return false;
        }

        return true;
    }

    /**
     * 判断日期时间是否为空
     * @param date
     * @return
     */
    public static boolean isDate(Date date){

        // 判断文件是否为null
        if(date == null){
            return false;
        }

        return true;
    }


    /**
     * 判断用户角色是否为空
     * @param role  用户角色
     * @return
     */
    public static boolean isRoleEmpty(Role role){

        // 排除空指针
        if(role == null){
            return false;
        }

        return true;
    }

    /**
     * 判断角色List是否为空
     * @param roles 用户角色
     * @return
     */
    public static boolean isRoleListEmpty(List<Role> roles){

        // 排除空指针
        if(roles == null){
            return false;
        }

        return true;
    }

    /**
     * 判断用户是否为空
     * @param user  用户
     * @return
     */
    public static boolean isUserEmpty(User user){

        // 排除空指针
        if(user == null){
            return false;
        }

        return true;
    }

    /**
     * 判断用户List是否为空
     * @param users 用户list
     * @return
     */
    public static boolean isUserListEmpty(List<User> users){

        // 排除空指针
        if(users == null){
            return false;
        }

        return true;
    }



    /**
     * 判断总量单位List是否为空
     * @param units 总量单位list
     * @return
     */
    public static boolean isUnitListEmpty(List<Unit> units){

        // 排除空指针
        if(units == null){
            return false;
        }

        return true;
    }

    /**
     * 判断年是否为空
     * @param unit  年
     * @return
     */
    public static boolean isUnitEmpty(Unit unit){

        // 排除空指针
        if(unit == null){
            return false;
        }

        return true;
    }



    /**
     * 判断关键字是否为 year 或 weight
     * @param key   关键字
     * @return
     */
    public static boolean isYearOrWeightKeyWord(String key) {

        // 是否等于year
        if (!"year".equalsIgnoreCase(key)) {
            return false;
        }
        // 是否等于weight
        if (!"weight".equalsIgnoreCase(key)) {
            return false;
        }
        return true;
    }


    /**
     *  判断政策文件对象是为空
     * @param publishPolicyFile 政策文件对象
     * @return
     */
    public static boolean isPublishPolicyFile(PublishPolicyFile publishPolicyFile) {

        // 排除空指针
        if (publishPolicyFile == null) {
            return false;
        }

        return true;
    }

    /**
     *  判断政策文件列表是为空
     * @param publishPolicyFiles 政策文件列表
     * @return
     */
    public static boolean isPublishPolicyFileList(List<PublishPolicyFile> publishPolicyFiles) {

        // 排除空指针
        if (publishPolicyFiles == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断产品对象是否为空
     * @return
     */
    public static boolean isProductEmpty(Product product) {
        // 排除空指针
        if (product == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断产品list对象是否为空
     * @return
     */
    public static boolean isProductListEmpty(List<Product> productList) {
        // 排除空指针
        if (productList == null) {
            return false;
        }

        return true;
    }


    /**
     * 判断产品月能耗对象是否为空
     * @return
     */
    public static boolean isProductMonthEnergyconsumptionEmpty(ProductMonthEnergyconsumption productMonthEnergyconsumption) {
        // 排除空指针
        if (productMonthEnergyconsumption == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断产品月能耗列表对象是否为空
     * @return
     */
    public static boolean isProductMonthEnergyconsumptionListEmpty(List<ProductMonthEnergyconsumptionVo> productMonthEnergyconsumptionList) {
        // 排除空指针
        if (productMonthEnergyconsumptionList == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断产品年能耗对象是否为空
     * @param productYearEnergyconsumption
     * @return
     */
    public static boolean isProductYearEnergyconsumptionEmpty(ProductYearEnergyconsumption productYearEnergyconsumption) {
        // 排除空指针
        if (productYearEnergyconsumption == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断产品年能耗列表对象是否为空
     * @param productYearEnergyconsumptionList
     * @return
     */
    public static boolean isProductYearEnergyconsumptionListEmpty(List<ProductYearEnergyconsumptionVo> productYearEnergyconsumptionList) {
        // 排除空指针
        if (productYearEnergyconsumptionList == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断项目总能耗对象是否为空
     * @param projectTotalEnergyconsumption
     * @return
     */
    public static boolean isProductTotalEnergyconsumptionListEmpty(ProjectTotalEnergyconsumption projectTotalEnergyconsumption) {
        // 排除空指针
        if (projectTotalEnergyconsumption == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断 web页面项目总能耗展示对象是否为空
     * @param projectTotalInfoVoList
     * @return
     */
    public static boolean isProjectTotalInfoVoListEmpty(List<ProjectTotalInfoVo> projectTotalInfoVoList) {
        // 排除空指针
        if (projectTotalInfoVoList == null) {
            return false;
        }

        return true;
    }

    /**
     * 判断项目总能耗展示对象是否为空
     * @param projectTotalEnergyconsumption
     * @return
     */
    public static boolean isProjectTotalEnergyconsumptionEmpty(ProjectTotalEnergyconsumption projectTotalEnergyconsumption) {
        // 排除空指针
        if (projectTotalEnergyconsumption == null) {
            return false;
        }

        return true;
    }
    /**
     * 检查用户通知list是否为空
     * @param userNotifyList
     * @return
     */
    public static boolean isUserNotifyListEmpty(List<UserNotify> userNotifyList) {
        // 排除空指针
        if (userNotifyList == null) {
            return false;
        }

        return true;
    }

    /**
     * 检查用户通知是否为空
     * @param userNotify
     * @return
     */
    public static boolean isUserNotifyEmpty(UserNotify userNotify) {
        // 排除空指针
        if (userNotify == null) {
            return false;
        }

        return true;
    }

    /**
     * 票据list是否为空
     * @param billList
     * @return
     */
    public static boolean isBillListEmpty(List<Bill> billList) {
        // 排除空指针
        if (billList == null) {
            return false;
        }

        return true;
    }


    /**
     * 检测系统信息对象不为空
     * @param system
     * @return
     */
    public static boolean isSystemEmpty(System system) {
        // 排除空指针
        if (system == null) {
            return false;
        }

        return true;
    }
}
